package com.kcwx.common.core.domain.entity;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

import lombok.Data;
import lombok.EqualsAndHashCode;

import com.kcwx.common.core.domain.BaseEntity;

/**
 * 用户对象 sys_user
 * 
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class SysUser extends BaseEntity {
	private static final long serialVersionUID = 1L;

	/** 部门ID */
	private Long deptId;

	/** 用户账号 */
	private String userName;

	/** 用户昵称 */
	private String nickName;

	/** 用户邮箱 */
	private String email;

	/** 手机号码 */
	private String phonenumber;

	/** 用户性别 0=男,1=女,2=未知*/
	private String sex;

	/** 用户头像 */
	private String avatar;

	/** 密码 */
	@JsonIgnore
	private String password;

	/** 帐号状态（1启用 0停用） 默认1*/
	private Integer status;

	/** 最后登录IP */
	private String loginIp;

	/** 最后登录时间 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date loginDate;

	/** 用户所属部门信息（用于查询返回信息） */
	private SysDept dept;

	/** 用户所属角色信息list集合（用于查询返回信息）*/
	private List<SysRole> roles;

	/**  用户所属角色id数组集合 （用于查询返回信息以及编辑信息时绑定角色信息）*/
	private Long[] roleIds;

	/** 用户所属岗位id数组集合 （用于查询返回信息以及编辑信息时绑定岗位信息）*/
	private Long[] postIds;

//	/** 角色ID */
//	private Long roleId;

	/** 用户所属角色名称 （用于列表页查询返回显示）*/
	private String roleName;

//	/** 是否管理员 */
//	public boolean isAdmin() {
//		return isAdmin(this.getId());
//	}
//	/** 验证是否管理员 */
//	public static boolean isAdmin(Long userId) {
//		return userId != null && 1L == userId;
//	}

//	@Override
//	public String toString() {
//		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("userId", getUserId())
//				.append("deptId", getDeptId()).append("userName", getUserName()).append("nickName", getNickName())
//				.append("email", getEmail()).append("phoneNumber", getPhoneNumber()).append("sex", getSex())
//				.append("avatar", getAvatar()).append("password", getPassword()).append("status", getStatus())
//				.append("delFlag", getDelFlag()).append("loginIp", getLoginIp()).append("loginDate", getLoginDate())
//				.append("createBy", getCreateBy()).append("createTime", getCreateTime())
//				.append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("remark", getRemark())
//				.append("dept", getDept()).toString();
//	}
}
